Question 1

Question 2

Question 1

What do you understand about the term “software engineering”?
  
The establishment and use of sound engineering principles in order to obtain
economically software that is reliable and works efficiently on real machines.
        


Question 2

State a few reasons for the need to “engineer” a software.

- The number of people who have an interest in the features and functions provided
by an application have grown dramatically.
- The requirements have grown complex, the programs have to be developed by
large teams of people and implementation involved many possible platforms and
devices.
- Individuals, businesses, and governments rely on software for strategic and
tactical decision making as well as day-to-day operations and control. There is
great impact if the software fails.
- As the perceived value of an application grows, it is likely that its user base and
longevity grows, and demands for adaptation and enhancement will grow.
        


Question 3

Describe the following domains of software applications using examples.

System Software
a collection of programs written to service other programs (e.g.- compiler, editor,
file management utilities)
Application Software
stand-alone program that solves a specific business need (e.g.- POS, inventory
control, cinema ticketing)
Engineering/Scientific Software
“number-crunching” programs that support engineering/scientific work (e.g.
astronomy, volcanology, automotive stress analysis, orbital dynamics, CAD)
Embedded Software
resides within a product/system and perform limited functions (e.g.- fuel control,
braking system, dashboard display, keypad control for microwave oven)
Product-line Software
software designed to provide specific capability for use by many different
customers (e.g. inventory control products)
Web/Mobile Applications
browser-based apps and software that resides on mobile devices
Artificial Intelligence Software
makes use of nonnumerical algorithms to solve complex problems that are not
amenable to computation or straightforward analysis (e.g. robotics, expert
systems, pattern recognition, artificial neural networks, game playing)
        


Question 4

Describe Polya’s Problem Solving Techniques and how it relates to the software engineering process.
        
a) Understanding the problem (communication and analysis), always ask why. Ex, can the problem be represented graphically?
b) Plan a solution (modeling and software design)
c) Carry out the plan (code generation)
d) Examine the result for accuracy (testing and quality assurance)
	


Question 5

Other than good knowledge and skills in computer programming, what are the other
abilities that good software engineers should have?
        
- Sense of individual responsibility
- Acutely aware of the needs of team members and stakeholders
- Brutally honest about design flaws and offers constructive criticism
- Resilient under pressure
- Heightened sense of fairness
- Attention to detail
- Pragmatic



Question 6

Search the Internet for information on “software crisis”. Discuss how this situation developed the need for software engineering process.
        
Complexity Outpaced Ability: 
Software became too complex for developers to manage effectively with ad-hoc methods.
Lack of Tools and Techniques: 
Developers didn't have the right tools and methodologies to handle the complexity.
Quality and Reliability Issues: 
Software often had bugs and failures, causing economic losses and user dissatisfaction.
Economic Impact: 
Software failures resulted in wasted resources and damaged reputations for organizations.
Increasing User Expectations: 
Users wanted more reliable and user-friendly software.
        


Question 7

Identify a software that you are using together with other students. Answer the following questions:
a) Specify the software application domain and category of the software.

The software application is Twitter, which falls under the domain of Web/Mobile
applications and the category of social media/microblogging platforms.

b) Who are the main users of the software? Specify at least 3 different roles for the software.

- Individual Users: 
Regular individuals who use Twitter for personal communication, networking, and sharing updates.
- Content Creators: 
Users who generate and share original content such as tweets, images, videos, and articles.
- Businesses and Organizations: 
Entities that utilize Twitter for marketing, customer engagement, brand promotion, and public relations.

c) For each role, describe a few main functions provided by the software for the role.

- Individual Users:
Posting tweets to share thoughts, opinions, or updates with followers.
Following other users to receive their tweets in their timeline.
Liking, retweeting, and replying to tweets to engage with other users' content.

- Content Creators:
Creating and publishing original content in the form of tweets, images, videos, or threads.
Interacting with followers through replies, direct messages, and engagement analytics.
Utilizing features like hashtags, mentions, and retweets to increase visibility and reach.

- Businesses and Organizations:
Running marketing campaigns through promoted tweets and targeted advertising.
Monitoring brand mentions, sentiment, and trends using analytics tools.
Providing customer support and addressing inquiries or complaints through direct messages and public responses.

d) What additional features that you would like to add to the software?

- Enhanced Privacy Controls: 
More granular options for controlling who can view and interact with tweets, including customizable privacy settings for individual tweets.
- Improved Content Moderation: 
Advanced tools for identifying and filtering out harmful or abusive content, ensuring a safer and more positive user experience.

e) Describe possible factors that would affect the software to be updated to a newer version.
        
- User Feedback and Requests: 
Twitter may prioritize updates based on user feedback and feature requests to address common pain points or enhance user experience.